
const mongoose = require('mongoose');
// console.log(mongoose);


// 连接数据库 -> demo
mongoose.connect("mongodb://localhost:27017/demo", {useNewUrlParser:true,useUnifiedTopology:true })
// mongoose.set('strictQuery',false)


// 这种也可以看数据库是否连接成功
mongoose.connection.on('connected', () => console.log('数据库连接成功'));
mongoose.connection.on('error', () => console.log('数据库连接异常'));
mongoose.connection.on('disconnectied', () => console.log('数据库连接断开'));



// 定义 Schema(模板)
// a. 在 Mongoose 中，所有数据都由一个 Schema 开始创建。

// b. 每一个 schema 都映射到一个 Mongodb 的集合(collection)，并定义了该集合(collection)中的文档(document)的形式。

// c. 相当于声明表结构信息，不能操作数据库

var Schema = mongoose.Schema;

var UserSchema = new Schema({
    name:String,
    age:{
        type:Number,
        require:true,
        min:0,
        max:1000,
        default:0,
    },
    height:{
        type:Number,
        require:true,
    },
    weight:{
        type:Number,
        require:true,
    },
    hobby:{
        type:Array,
        default:[]
    }
})

// 创建 Model(模型)  -> 链接表(集合  -> 没有就新增)

var model = mongoose.model;

var User = model("user",UserSchema);    



// Model的应用: 
// 1. 创建数据实例
// 被创建模型(User)相当于是一个构造函数,可用  `new`实例化出一个数据对象实例，构造函数的参数为一个对象，属性为插入一条数据具体的数值

// var Maomao = new User( { 
//     "name" : "毛毛", 
//     "age" : true, 
//     "height" : 179, 
//     "weight" : 76, 
//     "hobby" : [ "歌剧", "玩游戏" ] 
// })
// // console.log(Maomao);

// Maomao.save(function(err){
//     if(err) throw err;
//     console.log("新增成功");
// })


// var list = [
//     { "name" : "小红", "age" : 15, "height" : 169, "weight" : 51, "hobby" : [ "听歌", "追番", "漫画" ] },
//     { "name" : "李四", "age" : 27, "height" : 182, "weight" : 72, "hobby" : [ "唱歌", "跳舞" ] },
//     { "name" : "张三", "age" : 25, "height" : 175, "weight" : 65, "hobby" : [ "唱歌", "Rap" ] },
//     { "name" : "刀刀", "age" : 18, "height" : 171, "weight" : 60, "hobby" : [ "嗨歌", "看小说" ] },
//     { "name" : "小刀", "age" : 15, "weight" : 50, "height" : 165 }
// ]

// list.forEach(item =>{
//     var data = new User(item)
//     // console.log(data);

//     data.save(function(err){
//         if(err) throw err;
//         console.log("新增成功");
//     })
// })


